S/MIME (Secure/Multipurpose Internet Mail Extensions) 是一種電子郵件安全標準,基於 PKCS#7 / CMS,能夠為郵件提供 數位簽章 與 加密。
在實務上,S/MIME 常見於:
其中「數位簽章」能確保:
假設我們有一個郵件原文檔案 mail.txt
。
openssl smime -sign -in document.txt \
-signer cert.pem -inkey private.key \
-out signed_mail.eml -outform SMIME
這會產生一個 S/MIME 簽章郵件(signed_mail.eml
),其中包含:
openssl smime -verify -in signed_mail.eml -inform SMIME -noverify
成功會輸出原始郵件內容。若郵件被竄改,會出現驗證錯誤。
openssl smime -sign
產生的檔案會長這樣,裡面會把PKCS7當作附件部分,就可以拿來驗簽。
MIME-Version: 1.0
Content-Type: multipart/signed; protocol="application/x-pkcs7-signature"; micalg="sha-256"; boundary="----F585C540A9C01DC66E646772D6F39AB0"
This is an S/MIME signed message
------F585C540A9C01DC66E646772D6F39AB0
123
------F585C540A9C01DC66E646772D6F39AB0
Content-Type: application/x-pkcs7-signature; name="smime.p7s"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="smime.p7s"
MIIGGgYJKoZIhvcNAQcCoIIGCzCCBgcCAQExDzANBglghkgBZQMEAgEFADALBgkq
...
------F585C540A9C01DC66E646772D6F39AB0--
可以看到郵件內容與簽章一併包裝在 multipart/signed
格式。
這一篇我們學會了:
multipart/signed
)S/MIME 提供一個完整的郵件安全解決方案,除了數位簽章,還能進一步做到郵件加密。
這家在台北有多家分店,雖然今年上過不好的新聞,不過滷肉飯還不錯,虱目魚也好吃